فرض کن کلید ماشین رو میزنی، ولی موتور روشن نمیشه. باید بری زیر کاپوت و دستی موتور رو راهاندازی کنی. توی لینوکس، وقتی GRUB خراب میشه و سیستم بالا نمیآد، باید با دستورات دستی، بوتلودر رو راهاندازی کنی. این جلسه دقیقاً همین رو بهت یاد میده!
GRUB (Grand Unified Bootloader) برنامهای است که قبل از سیستمعامل اجرا میشود و وظیفه دارد هسته لینوکس (Kernel) را پیدا کرده و بارگذاری کند. اگر به هر دلیلی GRUB نتواند این کار را انجام دهد، سیستم با پیام «grub rescue>» یا صفحه سیاه مواجه میشود.
اگر سیستم شما بالا نمیآید و پیام grub rescue> یا error: no such partition میبینید، نگران نباشید. با چند دستور ساده میتوانید سیستم را دوباره راهاندازی کنید.
| علت | توضیح |
|---|---|
| حذف یا جابهجایی پارتیشن بوت | پارتیشنی که فایلهای GRUB روی آن قرار دارد، حذف یا تغییر کرده است. |
| تغییر UUID پارتیشنها | پس از تغییر اندازه یا فرمت پارتیشن، UUID عوض میشود و GRUB آن را پیدا نمیکند. |
| نصب سیستمعامل دیگر (دوالبوت) | نصب ویندوز یا سیستمعامل دیگر ممکن است GRUB را بازنویسی کند. |
| خرابی فایلهای پیکربندی GRUB | فایل grub.cfg خراب یا حذف شده است. |
| بهروزرسانی ناقص | آپدیت کرنل یا GRUB به درستی انجام نشده است. |
grub rescue>
اگر مستقیماً وارد محیط grub rescue> شدهاید، با چند دستور ساده میتوانید بوتلودر را دستی راهاندازی کنید.
توضیح: این دستور لیست پارتیشنهای موجود را نمایش میدهد.
حالا هر پارتیشن را بررسی کنید تا بفهمید کدام یک شامل فایلهای GRUB است:
توضیح: به دنبال پوشههایی مثل /boot/grub یا /grub و فایلهایی مثل vmlinuz (هسته لینوکس) باشید.
root و prefix
وقتی پارتیشن صحیح را پیدا کردید (مثلاً (hd0,msdos5))، آن را به عنوان ریشه (root) تنظیم کنید:
توضیح:
set root پارتیشن ریشه را مشخص میکند و set prefix مسیر فایلهای GRUB را تعیین میکند.
/boot/grub نباشند، ممکن است در /grub باشند. مسیر را با ls بررسی کنید.
توضیح:
insmod normal ماژول normal را بارگذاری میکند و normal منوی GRUB را نمایش میدهد.
منوی GRUB نمایش داده میشود و میتوانید سیستم را بهطور عادی بوت کنید. پس از ورود به سیستم، برای رفع دائمی مشکل، GRUB را دوباره نصب کنید:
اگر محیط grub rescue> کار نمیکند یا نمیتوانید پارتیشنها را شناسایی کنید، از یک دیسک زنده (Live CD/USB) استفاده کنید.
سیستم را با یک دیسک زنده (مثلاً کالی یا اوبونتو) بوت کنید و وارد ترمینال شوید.
توضیح: این دستورها لیست پارتیشنها را نشان میدهند. پارتیشن ریشه (جایی که / نصب است) و پارتیشن بوت را پیدا کنید.
توضیح: پارتیشن ریشه و پارتیشنهای سیستمی را Mount میکنیم تا بتوانیم محیط را تعمیر کنیم.
توضیح: chroot شما را به محیط سیستم اصلی میبرد تا بتوانید GRUB را تعمیر کنید.
توضیح: grub-install GRUB را روی MBR دیسک نصب میکند و update-grub فایل grub.cfg را بهروز میکند.
grub-install --target=x86_64-efi --efi-directory=/boot/efi نصب کنید.
grub-install و در رد هت از grub2-install استفاده میشود.
grub rescue> با دستورات ls، set root، set prefix، insmod normal و normalchrootgrub-install و update-grub--target=x86_64-efi نصب کنید.ls → مشاهده پارتیشنهاset root=(hdX,msdosY) → تنظیم ریشهset prefix=(hdX,msdosY)/boot/grub → تنظیم مسیر GRUBinsmod normal → بارگذاری ماژول normalnormal → نمایش منوی GRUBgrub-install /dev/sda → نصب GRUB روی MBRupdate-grub → بهروزرسانی فایل grub.cfg (دبیان)grub2-mkconfig -o /boot/grub2/grub.cfg → بهروزرسانی grub.cfg (رد هت)